<!DOCTYPE html>
<html lang="en">
<head>
    <meta  http-equiv="content-type" content="text/html" charset="utf-8"/>
    <meta charset="UTF-8">
    <title>Title</title>

    <script type="text/javascript">
        /**
         * JS中函数的参数分为形参和实参
         *内部用一个数组去接收实参
         * arguments对象可以访问函数的实际参数

    function test(a,b,c,d){
            var a1 = test.length;//4,返回形参的个数，这种写法不好
            var b1 = arguments.length;//2获得实际参数的长度
            var c1 = arguments[0];//4获得实际参数的第一个值
        console.log(a1+" :"+b1+":"+c1);
        return a+b;
    }*/
        /**
         * arguments用的最多的是递归
         * arguments.callee指向函数本身
         */
         function fact(num){
            if(num <= 1){ return 1;}
            else num*arguments.callee(num-1);
        }

        var f= fact;
        fact = null;
        f(5);//如果 else num*fact(num-1);就会报错，因为fact已经为null了

    </script>
</head>
<body>

</body>
</html>